Video Acceleration API

libVA
Stable release 1.0.15
Written in C
Operating system Unix-like
Type Library
Website www.freedesktop.org/wiki/Software/vaapi

Video Acceleration API (VA API) is an open source software library ("libVA") and API specification. It enables and provides access to graphics hardware (GPU) acceleration for video processing. VA API is targeted at the X Window System on Unix-based operating systems (including Linux, FreeBSD, and Solaris). Accelerated processing includes video decoding, video encoding, subpicture blending and rendering. The specification was originally designed by Intel for its GMA (Graphics Media Accelerator) series of GPU hardware. However, the API is not limited to GPUs or Intel specific hardware, as other hardware and manufacturers can also freely use this API for hardware accelerated video decoding.[1]

VA API was designed with the purpose of some day fully replacing XvMC, which used to be the Unix equivalent of the Microsoft Windows DirectX Video Acceleration (DxVA) API, and more.

Contents

Overview

The main motivation for VA API is to enable hardware accelerated video decode at various entry-points (VLD, IDCT, Motion Compensation, deblocking[2]) for the prevailing coding standards today (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/WMV3). Extending XvMC was considered, but due to its original design for MPEG-2 MotionComp only, it made more sense to design an interface from scratch that can fully expose the video decode capabilities in today's GPUs.[3]

As of October 3, 2011 VA API is natively supported by :

VDPAU (Video Decode and Presentation API for Unix), a competing API designed by NVIDIA, can potentially be also used as a backend for the VA API. If this is supported, any software that supports VA API then also indirectly supports a subset of VDPAU.[7] Additionally, in November 2009, VA-API gained a new proprietary backend named "xvba-video" which allows VA-API powered applications to take advantage of AMD Radeon's UVD2 chipsets via the XvBA library (X-Video Bitstream Acceleration API designed by AMD).

Processes that can be accelerated with VA API

Processes that can be accelerated if both the device drivers and GPU hardware supports them:

Architecture

The current interface is focused on video decode only and is window system independent, so that potentially it can be used with graphics sub-systems other than the X Window System. In a nutshell it is basically a scheme to pass various types of data buffers from the application to the GPU for decoding a compressed bit-stream. Feedback on this API is greatly welcomed, as this is intended to be a community collaborative effort.

Sources

"This API is intended to provide an interface between a video decode application (client) and a hardware decode accelerator (server), to off-load video decode operations from the host to the hardware accelerator at various entry-points." http://www.freedesktop.org/wiki/Software/vaapi

"A new video acceleration API is being developed, in an effort led by Intel. This new API supports more complete offload (VLD) as well as iDCT+MC, and can support acceleration of MPEG4, H.264, VC-1, as well as MPEG-2." http://www.mythtv.org/wiki/XvMC

The "VA API" and "libVA" can also be read about here: "The end user impact is improved performance of H.264, VC-1, MPEG-2 and MPEG-4 video playback with media players that use the new API compared to playback using a pure software implementation." https://wiki.ubuntu.com/mobile-hw-decode

Software supporting VA API

Some software may gain VA API support in the future : Lightspark (Flash / SWF player),[16] GStreamer (via "gstreamer-vaapi" VA-API plugins for GStreamer)[17] and Xine (via "xine-lib-vaapi" library).[18]

See also

References

External links